package view;

import iniciarJogo.CarregarDados;

import javax.swing.JPanel;

import javax.swing.JDialog;
import javax.swing.JLabel;

import java.awt.Color;
import java.awt.Rectangle;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;


import comunicacao.ConstantesComunicacao;


import model.Jogador;
import model.Lugar;
import model.Lugares;
import model.Peao;

import controller.ControladorServidor;

public class DialogCriarPartida extends JDialog {

	private FramePrincipal frame = null;
	private ControladorServidor controladorServidor = null;  //  @jve:decl-index=0:
	private DialogPreparacao preparacao = null;
	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel apelido_jl = null;
	private JTextField apelido_tf = null;
	private JLabel servidor_jl = null;
	private JTextField servidor_tf = null;
	private JLabel nomePartida_jl = null;
	private JTextField nomePartida_tf = null;
	private JLabel quantidadeJogadores_jl = null;
	private JLabel senha_jl = null;
	private JTextField senha_tf = null;
	private JComboBox quantidadeJogadores_cb = null;
	private JButton criar_jb = null;
	private JLabel porta_jl = null;
	private JTextField porta_tf = null;
	/**
	 * @param owner
	 */
	public DialogCriarPartida(FramePrincipal owner) {
		super(owner);
		initialize();
		frame = owner;
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(360, 272);
		this.setContentPane(getJContentPane());
		this.setTitle("Criar Partida");
		this.setResizable(false);
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				frame.setVisible(true);
			}
		});
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			porta_jl = new JLabel();
			porta_jl.setBounds(new Rectangle(286, 115, 43, 22));
			porta_jl.setText("Porta:");
			senha_jl = new JLabel();
			senha_jl.setBounds(new Rectangle(33, 81, 114, 22));
			senha_jl.setText("Senha (opicional):");
			quantidadeJogadores_jl = new JLabel();
			quantidadeJogadores_jl.setBounds(new Rectangle(33, 49, 114, 22));
			quantidadeJogadores_jl.setText("Jogadores:");
			nomePartida_jl = new JLabel();
			nomePartida_jl.setBounds(new Rectangle(33, 17, 114, 22));
			nomePartida_jl.setText("Nome da Partida:");
			servidor_jl = new JLabel();
			servidor_jl.setBounds(new Rectangle(33, 147, 114, 22));
			servidor_jl.setText("IP servidor:");
			apelido_jl = new JLabel();
			apelido_jl.setBounds(new Rectangle(33, 115, 114, 22));
			apelido_jl.setText("Apelido");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(apelido_jl, null);
			jContentPane.add(getApelido_tf(), null);
			jContentPane.add(servidor_jl, null);
			jContentPane.add(getServidor_tf(), null);
			jContentPane.add(nomePartida_jl, null);
			jContentPane.add(getNomePartida_tf(), null);
			jContentPane.add(quantidadeJogadores_jl, null);
			jContentPane.add(senha_jl, null);
			jContentPane.add(getSenha_tf(), null);
			jContentPane.add(getQuantidadeJogadores_cb(), null);
			jContentPane.add(getCriar_jb(), null);
			jContentPane.add(porta_jl, null);
			jContentPane.add(getPorta_tf(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes apelido_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getApelido_tf() {
		if (apelido_tf == null) {
			apelido_tf = new JTextField();
			apelido_tf.setBounds(new Rectangle(154, 115, 114, 22));
		}
		return apelido_tf;
	}

	/**
	 * This method initializes servidor_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getServidor_tf() {
		if (servidor_tf == null) {
			servidor_tf = new JTextField();
			servidor_tf.setBounds(new Rectangle(154, 147, 114, 22));
			servidor_tf.setEditable(false);
			try {
				servidor_tf.setText(InetAddress.getLocalHost().getHostAddress().toString());
			} catch (UnknownHostException e) {
				servidor_tf.setText(e.getMessage());
			}
		}
		return servidor_tf;
	}

	/**
	 * This method initializes nomePartida_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getNomePartida_tf() {
		if (nomePartida_tf == null) {
			nomePartida_tf = new JTextField();
			nomePartida_tf.setBounds(new Rectangle(154, 18, 114, 22));
			nomePartida_tf.setEditable(false);
		}
		return nomePartida_tf;
	}

	/**
	 * This method initializes senha_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getSenha_tf() {
		if (senha_tf == null) {
			senha_tf = new JTextField();
			senha_tf.setBounds(new Rectangle(154, 81, 114, 22));
			senha_tf.setEditable(false);
		}
		return senha_tf;
	}

	/**
	 * This method initializes quantidadeJogadores_cb	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getQuantidadeJogadores_cb() {
		if (quantidadeJogadores_cb == null) {
			quantidadeJogadores_cb = new JComboBox();
			quantidadeJogadores_cb.addItem(2);
			quantidadeJogadores_cb.addItem(3);
			quantidadeJogadores_cb.addItem(4);
			quantidadeJogadores_cb.addItem(5);
			quantidadeJogadores_cb.addItem(6);
			quantidadeJogadores_cb.setBounds(new Rectangle(154, 49, 114, 22));
		}
		return quantidadeJogadores_cb;
	}

	/**
	 * This method initializes criar_jb	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getCriar_jb() {
		if (criar_jb == null) {
			criar_jb = new JButton();
			criar_jb.setText("Criar");
			criar_jb.setBounds(new Rectangle(223, 185, 92, 24));
			criar_jb.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					criarPartida();
				}
			});
		}
		return criar_jb;
	}
	
	private void criarPartida(){
		//String nomePartida = nomePartida_jl.getText();
		int quantidadeJogadores = new Integer(quantidadeJogadores_cb.getSelectedItem().toString());
		String apelido = apelido_tf.getText();
		
		try {
			CarregarDados carregarDados = new CarregarDados();
			controladorServidor = ControladorServidor.getInstace();
			controladorServidor.criarPartida(quantidadeJogadores,apelido);
			controladorServidor.getPartida().setLugares(carregarDados.gerarLugares()); //carrega todos os lugares.
			
			if(preparacao == null){
				preparacao = new DialogPreparacao(this.controladorServidor);
			}
			
			this.setVisible(false);						// finalizar o dialog.
			preparacao.setVisible(true);
			
		} catch (UnknownHostException e) {
			System.out.println("merda1");
			JOptionPane.showMessageDialog(this, e.getMessage());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * This method initializes porta_tf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getPorta_tf() {
		if (porta_tf == null) {
			porta_tf = new JTextField();
			porta_tf.setBounds(new Rectangle(286, 147, 44, 22));
			porta_tf.setText(String.valueOf(ConstantesComunicacao.PORTA));
			porta_tf.setEditable(false);
		}
		return porta_tf;
	}

}  //  @jve:decl-index=0:visual-constraint="25,16"
